The present invention relates in general to object-oriented computer systems. More specifically, the present invention relates to managing instances of objects, and in particular, to a method and system for migrating an object between a merged status having a single instance and a split status having multiple instances.
Current computer programming techniques include the use of Object-Oriented Programming (xe2x80x9cOOPxe2x80x9d). Object-Oriented Programming centers on reusable, self-contained, callable program code modules known in the art as xe2x80x9cobjects.xe2x80x9d Such a modular approach makes software development more efficient and reliable through the use and reuse of proven, tested objects.
Each object is designed to accomplish a predefined set of operations through xe2x80x9cmethods.xe2x80x9d These methods include programmed tasks for the object to perform when called upon to do so (i.e., invoked). Each particular method is defined within a xe2x80x9cclassxe2x80x9d associated with an object. The class acts as a template that describes the behavior of a group of similar objects. An object is instantiated from (or is a runtime instance of) a selected class, and includes methods and attributes (or data) defined in the class.
Objects are shared resources that may be invoked (i.e., by invoking their methods) by other objects throughout the object-oriented computer system. The load on an object (and the corresponding load on the execution environment it is instantiated within) will therefore vary with the periodicity of invocations of the object and complexity of the methods used within the object. Careful system planning is required such that enough instances of any particular object are available to handle the presented load. However, problems are associated with this planning.
One problem associated with load planning involves object naming. Each object instantiated in a conventional object-oriented computer system is registered in an object manager and identified with a unique name. Invocations of the object are performed through use of the object manager and the object""s unique name. Therefore, if multiple instances of an object are created in a computer system, they must each be separately identified and invoked. Each invoker is therefore assigned the identifier of a unique instance of the object in the computer system. If it becomes desirable to invoke a different instance of the object, the identifier that an invoker uses must be changed. Managing these changes in object-oriented computer systems that have multiple (e.g., hundreds or thousands) invokers and object instances is unmanageable.
In further regard to the problems of load planning, one solution to increasing the capacity of a single instance of an object would be to move the object to an execution environment with greater processing capacity. Such a solution is described in the co-pending U.S. Patent Application entitled xe2x80x9cMETHOD AND SYSTEM OF DYNAMICALLY MOVING OBJECTS BETWEEN HETEROGENEOUS EXECUTION ENVIRONMENTS,xe2x80x9d Ser. No. 08/578,098, filed herewith. However, a single other execution environment with sufficient processing capacity may not always exist.
The present invention is directed toward solutions to the above noted problems.
In a first aspect, the present invention operates in an object-oriented computer system that includes an object and at least one invoker. The object is invocable by the at least one invoker.
In particular, the present invention comprises a method of managing the object at runtime and includes identifying a request to migrate the object between a split status and a merged status. The split status comprises the object having at least two instances, and the merged status comprises the object having a single instance. The object is migrated, at runtime, between the split status and the merged status. Despite the object being having the split or merged status, the object is invocable in a same way by the at least one invoker.
As an enhancement, the object may have an identifier assigned thereto for invocation thereof. This identifier is maintained for invoking the object, despite the object having the split or merged status. Further, the object-oriented computer system may include a routing table used by an object manager to track objects. If the object is migrated from the split status to the merged status, then the single instance is assigned to the identifier within the routing table. If the object is migrated from the merged status to the split status, then the at least two instances are assigned to the identifier within the routing table.
As a further enhancement, the object may have a state comprising invocation persistent values. The method may include preserving the state of the object during the migrating. More particularly, if the object is migrated from the merged status to the split status, the method may include copying the state of the single instance to the at least two instances. If the object is migrated from the split status to the merged status, the method may include consolidating the state of the at least two instances and copying the state to the single instance of the object.
In another aspect, the present invention operates in an object-oriented computer system that includes an object and at least one invoker. The object is invocable by the at least one invoker. The present invention includes a method of managing the object at run-time, and includes providing multiple instances of the object. Each instance of the multiple instances of the object is a candidate for invocation upon an invocation of the object. An invocation of the object is received. Particularly, the invocation identifies the object and is indescriptive of the multiple instances of the object. In response to the invocation, an instance of the multiple instances is invoked.
As an enhancement, the method includes determining which instance of the multiple instances of the object to invoke during the invoking. The determining may be performed using a predefined heuristic for the object. Further, the invoking may include informing the invoked instance about the multiple instances of the object in the object-oriented computing system.
A method corresponding to the above-described system is further disclosed herein.
To summarize, the present invention has multiple advantages and features associated with it. Creating multiple instances of an object, on multiple execution environments, facilitates improved performance of the object. A single object identifier is used to invoke the object, despite how many instances of it exist. Thus, according to the present invention, these multiple instances are creatable and invocable in a transparent manner to invokers of the object. Furthermore, the migration of an object between a split and merged status is performable at run time such that dynamic system flexibility and change are enhanced.